package com.jrx.anytxn.investor.service;

import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.investor.bean.InvestorTransferBean;
import com.jrx.anytxn.investor.bean.InvestorTransferSaveBean;

/**
 * 账户类型转列策略
 *
 * @author liuyang
 * @date 2020-05-27
 **/
public interface IInvestorTransferTypeStrategy<T> {

    /**
     * 账户外转列处理 会计状态升级，转表外，五级分类升级
     *
     * @param transferBean 转列辅助Bean
     * @return InvestorTransferSaveBean 转列保存Bean
     * @throws TxnException
     * @author liuyang
     * @date 2020-05-27
     */
    InvestorTransferSaveBean transferOut(InvestorTransferBean<T> transferBean) throws TxnException;


    /**
     * 账户内转列出处理 会计状态降级，转应计，五级分类降级
     *
     * @param transferBean 转列辅助Bean
     * @return InvestorTransferSaveBean 转列保存Bean
     * @throws TxnException
     * @author liuyang
     * @date 2020-05-27
     */
    InvestorTransferSaveBean transferIn(InvestorTransferBean<T> transferBean) throws TxnException;
}
